
/*
	id = ""; //아이디 (type : 1)
	nm = ""; //국내이름 (type : 2)
	birth = ""; //생년월일 (type : 3)
	civil_code = ""; //주민번호 (type : 4)
	
	email = ""; //이메일 (type : 5)
	account = ""; //계좌번호 (type : 6)
	card_code = ""; //카드번호 (type : 7)
	ip = ""; //IP (type : 8)
	imei = ""; //IMEI (type : 9)
	
	fnm = ""; //외국인 이름	(type : 10)
	lnm = ""; //외국인 성 (type : 10)
	
	home_addr1 = ""; //집 주소 (type : 11)
	home_addr2 = ""; //집 상세주소 (type : 11)
*/
	/**
	 * TYPE 별 마스킹 처리.
	 * @param 
	 * type   : 아이디(1), 국내이름(2), 생년월일(3), 주민번호(4), 집 주소(11)
	 * value1 : type value
	 * value2 : type value ( type : 11 )
	 * @return this type masking value
	 */
	applyMask = function( type, value1, value2 ){
		if( type == 11 && value2 == 'return' && value1 == '' )value2 = '';
		var id, nm, birth, civil_code, email, account, card_code, ip, imei, fnm, lnm, home_addr1, home_addr2; 
		
		var f_size; // full size
		var m_size; // mask size
		var mask = "";
	
		/* 유효한 함수 호출인지 확인한다.( default 의 undefined , null 체크 ) */
		if( isEmpty(type) || isEmpty(value1) || isEmpty(value2)){
			alert(isEmptyMessage());
			return;
		}
		
		if( type == 1 ){ //아이디 : 끝 두자리 마스킹 처리
		
			id = value1;
			f_size = value1.length;
			m_size = 2;
			maskDrawing(m_size);
			
			if(maskCondition()){
				result = id.substring(0,(f_size-m_size)) + mask;
			}else{
				result = maskConditionBad(id);
			}
			
		}else if( type == 2 ){ //이름 : A* , A*C, A**D 
		
			nm = value1;
			f_size = value1.length;
			
			if(f_size == 1){
				result = nm;
			}else if(f_size == 2){
				result = nm.substring(0,1) + "*";
			}else if(f_size == 3){
				result = nm.substring(0,1) + "*" + nm.substring(2,3);
			}else{
				result = nm.substring(0,1) + "**" + nm.substring(3,f_size);
			}

		}else if( type == 3 ){ //생년월일 : ****-**-** / 취득된 데이터 포맷이 다를 경우 모두 마스킹한다.
		
			birth = value1;
			f_size = value1.length;
			
			birth = $.trim(birth);
			birth = birth.replace(/-/g, "");
			birth = birth.replace(/년/g, "");
			birth = birth.replace(/월/g, "");
			birth = birth.replace(/일/g, "");
			
			if(birth.length == 8){
				result = birth.substring(0,4) + "-" + birth.substring(4,6) + "-" + birth.substring(6,8);
			}else{
				m_size = birth.length;
				maskDrawing(m_size);
				result = mask;
			}
			
		}else if( type == 4 ){ //주민번호 : 끝 6자리 마스킹.
		
			civil_code = value1;
			f_size = value1.length;
			
			m_size = 6;
			maskDrawing(m_size);
			
			if(maskCondition()){
				result = civil_code.substring(0,(f_size-m_size)) + mask;
			}else{
				result = maskConditionBad(civil_code);
			}
			
		}else if( type == 11 ){ //집주소 : 동,명,읍 마스킹. ex)고담시 ***동 고담신도시APT
		
			home_addr1 = value1; 
			home_addr2 = value2;
			home_addr1 = $.trim(home_addr1); //좌우공백제거
			f_size = home_addr1.length;
			
			m_size = 3;
			maskDrawing(m_size);
			
			var last_str = ""; //마지막 글자를 갖는다.
			var index_num = ""; //case 해당 indexOf 를 갖는다.
			var addr_condition = addrCondition(home_addr1); //동,면 읍을 포함 한 CASE 를 확인 / 해당 CASE 가 없을 경우 0을 리턴
			
			if( addr_condition == 1){ //끝자리 
			
				result = firstAddrMask(home_addr1);
				
			}else if(addr_condition != 0){ //중간에 포함 한 경우

				var home_addr_fr = "";
				var home_addr_lt = ""; 
				
				home_addr_fr = home_addr1.substring( 0, (home_addr1.lastIndexOf(last_str) + 1) );
				home_addr_fr = $.trim(home_addr_fr);
				
				f_size = home_addr_fr.length;
				
				home_addr_lt = home_addr1.substring( (home_addr1.lastIndexOf(last_str) + 1) ,home_addr1.length);
				home_addr_lt = $.trim(home_addr_lt);
				result = firstAddrMask(home_addr_fr) + " " + home_addr_lt + " " + home_addr2;

			}else{ //CASE 없음
				if(home_addr2 == 'return')home_addr2 = '';
				result = home_addr1 +" "+ home_addr2;
			}
			
			function addrCondition(addr){ //동,면,읍 에 해당될 경우의 CASE 번호를 리턴, CASE에 해당 마지막 문자를 last_str 이 갖는다.
				
				last_str = addr.substring((f_size - 1),f_size);
				if( last_str == "동" || last_str == "면" || last_str == "읍"){
					return 1;
				}else{
				 	if( addr.indexOf("동 ") != -1 ){
						last_str = "동 ";
						return 2;
					}else if( addr.indexOf("면 ") != -1 ){
						last_str = "면 ";
						return 3;
					}else if( addr.indexOf("읍 ") != -1 ){
						last_str = "읍 ";
						return 4;
					}else{
						return 0;
					}
				}
			}
			function firstAddrMask(addr){ //CASE에 해당되는 앞주소의 마스킹 처리.
				var mask_addr = ""; 
				mask_addr = addr.substring(0,addr.lastIndexOf(" ")) + " ***" + addr.substring((f_size - 1));
				return mask_addr;
			}
			
		}
		
		function maskDrawing(size){ //마스킹 사이즈 만큼 아스타 담기.
			if(mask != "") mask = "";
			for ( var int = 0; int < size; int++) {
				mask += "*";
			}
		}
		function maskCondition(){ //총 사이즈에 마스킹 사이즈가 반을 넘기는지 확인.
			if((f_size - m_size) < m_size){
				return false;
			}else{
				return true;
			}
		}
		function maskConditionBad(value){ 
			//89091021
			var d_size_1; //division size
			var d_size_2; //division size
			var d_size_3; //division size
			var result_str;

			d_size_1 = f_size / m_size; //1.5	
			d_size_2 = Math.ceil(d_size_1);  //올림
			d_size_3 = Math.floor(d_size_1); //내림

			maskDrawing(d_size_2);
			result_str = value.substring(0,d_size_3) + mask;
			
			return result_str;
		}
		function isEmpty(value){
			if( value == "undefined" || value == null ){
				return true;
			}else{
				return false;
			}
		}
		function isEmptyMessage(){				
			var message;		
			if(isEmpty(type)){
				message = "잘못 된 함수 호출 : 지원하지 않는 TYPE VALUE 입니다.";
			}else if(isEmpty(value1)){
				message = "잘못 된 함수 호출 : VALUE1 의 값은 NULL 입니다.";
			}else if(isEmpty(value2)){
				message = "잘못 된 함수 호출 : VALUE2 의 값은 NULL 입니다.";
			}else{
				message = "";
			}
			return message;				
		}
		if( type == 11 && value2 == 'return'){
			return result;
		}else{
			document.write(result);
		}
	};
